From: Florian Date: Fri, 18 Dec 2015 19:09:34 +0000 (+0100) Subject: Add a new hook AfterBuildFeedLinks to manipulate feed links X-Git-Tag: 1.31.0-rc.0~8594^2 X-Git-Url: http://git.cyclocoop.org/%7D%7Cconcat%7B?a=commitdiff_plain;h=eb343c847f9195e276b17327ea3cf0dae7a4b7fd;p=lhc%2Fweb%2Fwiklou.git Add a new hook AfterBuildFeedLinks to manipulate feed links Some extensions may want to replace, remove or manipulate a specific feed link after it was build. For this purpose: Add a new hook to enable this. The hook isn't meant for adding new feed links, this is already easily possible using OutputPage::addFeedLink(). Bug: T121774 Change-Id: If48bd07a0e7e67fd1c1a94ebaa28ca9dae146c55 --- diff --git a/includes/OutputPage.php b/includes/OutputPage.php index 67c54bb16c..78eb458c4f 100644 --- a/includes/OutputPage.php +++ b/includes/OutputPage.php @@ -3502,13 +3502,15 @@ class OutputPage extends ContextSource { # Feeds if ( $config->get( 'Feed' ) ) { + $feedLinks = array(); + foreach ( $this->getSyndicationLinks() as $format => $link ) { # Use the page name for the title. In principle, this could # lead to issues with having the same name for different feeds # corresponding to the same page, but we can't avoid that at # this low a level. - $tags[] = $this->feedLink( + $feedLinks[] = $this->feedLink( $format, $link, # Used messages: 'page-rss-feed' and 'page-atom-feed' (for an easier grep) @@ -3529,7 +3531,7 @@ class OutputPage extends ContextSource { if ( $config->get( 'OverrideSiteFeed' ) ) { foreach ( $config->get( 'OverrideSiteFeed' ) as $type => $feedUrl ) { // Note, this->feedLink escapes the url. - $tags[] = $this->feedLink( + $feedLinks[] = $this->feedLink( $type, $feedUrl, $this->msg( "site-{$type}-feed", $sitename )->text() @@ -3538,7 +3540,7 @@ class OutputPage extends ContextSource { } elseif ( !$this->getTitle()->isSpecial( 'Recentchanges' ) ) { $rctitle = SpecialPage::getTitleFor( 'Recentchanges' ); foreach ( $config->get( 'AdvertisedFeedTypes' ) as $format ) { - $tags[] = $this->feedLink( + $feedLinks[] = $this->feedLink( $format, $rctitle->getLocalURL( array( 'feed' => $format ) ), # For grep: 'site-rss-feed', 'site-atom-feed' @@ -3546,6 +3548,13 @@ class OutputPage extends ContextSource { ); } } + + # Allow extensions to change the list pf feeds. This hook is primarily for changing, + # manipulating or removing existing feed tags. If you want to add new feeds, you should + # use OutputPage::addFeedLink() instead. + Hooks::run( 'AfterBuildFeedLinks', array( &$feedLinks ) ); + + $tags += $feedLinks; } # Canonical URL